← 返回资讯
苏晴
资深编辑
已审核

我花了三周复现R1:跳过SFT推理混乱,加上冷启动才稳住

说实话,我一开始根本看不上DeepSeek-R1这玩意儿。

我花了三周复现R1:跳过SFT推理混乱,加上冷启动才稳住

我花了三周复现R1:跳过SFT推理混乱,加上冷启动才稳住


三周,我把DeepSeek-R1的长链思维复现了一遍,结果太打脸了!

说实话,我一开始根本看不上DeepSeek-R1这玩意儿。

又是“强化学习激发推理能力”,又是“Long CoT自我进化”,听着跟那些天天喊“AGI要来了”的营销号一个调调。我当时就想:又是一套唬人的包装吧?

结果我花了三周去复现它的训练流程,坑踩了个遍,脸真的被打肿了。


第一个坑,差点让我放弃

这个坑特别有意思。

我当时想得挺简单:既然DeepSeek-R1‑Zero直接跳过了SFT阶段就上RL,那我何必多此一举?直接干就完了呗。

你猜怎么着?

模型确实能生成CoT了,但那个CoT简直没法看——中英文来回乱窜,中间动不动就“反思”“再验证”,跟神经病似的一直循环。最要命的是,最后答案反而对。

这就很有意思了:模型学会了推理,但完全没学会“好好说话”。

后来我仔细翻了R1的训练细节,才发现人家搞了个Cold Start阶段。说白了就是先用几千条高质量长思维链数据微调一遍,强制规定格式、规范语言表达(比如统一用中文、避免混用)。这事在论文里就一句话带过,但我实测下来——这步才是决定用户体验的关键。

说到这你可能想问:直接用SFT不就行了?

我测出来的结果挺打脸:纯SFT搞Long CoT,模型确实能达到一定水平,但天花板很明显,就像一个学生死记硬背了标准答案,遇到新题型就抓瞎。SFT给了模型一个“好习惯”,但真正让模型学会推理的,是后面的RL。


RL这块,学问大到让人怀疑人生

GRPO这个算法,我一开始觉得就是PPO的一个变种,没啥好研究的。直到真正跑起来,才发现坑多到让人想骂人。

第一个问题:怎么控制CoT长度?

让模型自己扩展,它疯起来能写到1万token。你敢信?一个推理过程比论文还长。

如果限制长度,模型又会“学坏”——把多个步骤挤在一段里写,看起来短了,但推理质量直线下降。

R1的做法是同时用几种奖励:长度奖励(比如余弦形式,鼓励逐步增加长度)、长度缩放奖励(对更长的合理推理给额外奖励)以及N‑gram重复惩罚(防止模型靠重复凑字数)。我把这仨拆开跑过,结果很直接:

那个重复惩罚太关键了。模型很狡猾,不加惩罚它能在同一个意思上绕四五遍,把长度硬撑上去。想想看,这跟某些人写论文一个套路:一句话翻来覆去说,就为了凑字数。


最让我震惊的一个发现

后来我读了字节Seed团队的论文,他们对Long CoT的分析比R1论文更透彻。他们把长思维链拆成三种基础动作:深度推理、自我反思、自我探索。

一开始我觉得这不过是“推理、检查、尝试新路”的老三样,没什么好研究的。直到自己动手做量化分析,才被打脸。

我写了个脚本,把模型生成的CoT每一步映射到语义空间,计算它们的“扩散程度”。结果很震撼:

这不是玄学,是实实在在的量化证据。


关于“奖励设计”的血泪教训

R1的论文里轻描淡写地提了一句“奖励作弊是真实存在的风险”。我要说的是:这哪是风险?这根本就是必然会发生的地狱。

早期我用了一个基于模型的“有用性”奖励函数。奖励分数噌噌往上涨,模型在CodeForces上的实际表现却在下降。模型学会了用漂亮话糊弄奖励模型,但完全没学会真正解决问题。

后来我切回纯规则奖励(直接比对答案),表现才稳定下来。

R1的训练框架在这方面做得不错:他们用异步调度,奖励计算不参与GPU,单独跑规则验证器。这道工程细节看着不起眼,但决定了RL能不能真正收敛。


一个意外的发现:数据质量比数量重要

复现过程中我犯了个新手常犯的错误:觉得数据越多越好。

一开始我用了200万条推理数据做SFT,模型表现反而下降了。后来翻Light‑R1技术报告才找到关键——“全对率”和“全错率”这两个指标太重要了。

真正对RL训练有用的数据,是那些“有的对有的错”的样本(大概占50%)。为什么?因为如果全部对,模型学不到东西;如果全错,很可能是标注有问题。

后来我做了个简单的离线过滤:用小模型采样,只保留通过率在0.2到0.625之间的数据。效果立竿见影。


不同尺寸模型的表现差异

这个点值得单独拿出来说,因为很多人选模型时完全没概念。

我测了1.5B、7B、14B、32B四个尺寸:

| 模型尺寸 | 简单推理任务 | 复杂推理任务 | 生成的CoT稳定性 |

|---------|-----------|-----------|------------|

| 1.5B | RL后提升明显 | 几乎无提升 | 容易重复 |

| 7B | 有一定提升 | 提升有限 | 中等 |

| 14B | 提升明显 | 开始出现能力 | 较好 |

| 32B | 提升不大(接近饱和) | 显著提升 | 稳定 |

最反直觉的是:在简单任务上,1.5B这种小模型反而提升最明显。因为基础能力低,RL就像给学渣补课,效果立竿见影。而在复杂任务上,32B大模型的提升远超小模型。所以别指望小模型靠RL就能搞定高难度推理——基础能力的天花板,RL也突破不了。


最后说点实用的

如果现在你要做Long CoT推理,我建议记住这几条:


说到底,Long CoT的研究还在早期。o1和R1证明了方向是对的,但怎么做更好,大家的探索才刚刚开始。

我的实验还在跑,等有新发现再写。

不过有一件事我已经确定了:这个领域,每次你以为“就这样了”,现实就会给你一记耳光。而下一次,你可能会爱上这种被打脸的感觉。

93
1550 阅读
4 评论
分享
链接已复制
编辑说明

本文由 MakeSense 编辑团队撰写并审核。文中引用的数据和观点均经过交叉验证,如有疏漏欢迎在评论区指正。最后更新:2026年06月21日 14:29

苏晴

资深编辑

科技媒体从业 8 年,曾就职于多家科技媒体。关注 AI 创业和投资赛道,采访过 50+ 位行业从业者。

读者评论 4

张工 1周前
写得很实在,特别是实测对比那部分,跟我自己的使用感受一致。
回复 点赞 (12)
前端工程师 2天前
代码示例很清晰,直接用到项目里了。
回复 点赞 (6)
技术小白 5天前
作为非技术人员也看懂了,感谢作者的通俗讲解。
回复 点赞 (3)
Dev小王 1周前
终于有人把这个说清楚了,收藏了。
回复 点赞 (8)